package com.microframework.netty.enums;

/**
 * 命令类型枚举 - 定义客户端和服务器之间的所有通信协议
 */
public enum CommandType {
    // ========== 客户端到服务器命令 ==========
    
    /**
     * 客户端信息 - 首次连接时发送
     * 载荷: ClientInfo 对象
     */
    CLIENT_INFO,
    
    /**
     * 客户端状态报告 - 定期发送或状态变化时发送
     * 载荷: Map<String, Object> 包含状态信息
     */
    CLIENT_STATUS,
    
    /**
     * 心跳检测 - 保持连接活跃
     * 载荷: 空或时间戳
     */
    HEARTBEAT,
    
    /**
     * 客户端请求 - 通用请求
     * 载荷: 请求参数
     */
    CLIENT_REQUEST,
    
    /**
     * 数据上报 - 客户端上报业务数据
     * 载荷: 业务数据对象
     */
    DATA_REPORT,
    
    /**
     * 日志上传 - 客户端上传日志
     * 载荷: 日志内容
     */
    LOG_UPLOAD,
    
    // ========== 服务器到客户端命令 ==========
    
    /**
     * 时间同步 - 服务器同步时间到客户端
     * 载荷: Long 类型时间戳(毫秒)
     */
    SERVER_TIME_SYNC,
    
    /**
     * 配置更新 - 服务器下发新配置
     * 载荷: Map<String, Object> 配置键值对
     */
    SERVER_CONFIG_UPDATE,
    
    /**
     * 重启命令 - 要求客户端重启
     * 载荷: 可选的延迟时间(毫秒)
     */
    SERVER_RESTART_COMMAND,
    
    /**
     * 断开连接命令 - 要求客户端断开连接
     * 载荷: 可选的断开原因
     */
    SERVER_DISCONNECT,
    
    /**
     * 服务器推送 - 通用服务器推送
     * 载荷: 任意业务数据
     */
    SERVER_PUSH,
    
    /**
     * 远程执行 - 要求客户端执行特定操作
     * 载荷: 操作指令和参数
     */
    REMOTE_EXECUTE,
    
    // ========== 双向命令 ==========
    
    /**
     * 确认响应 - 对收到命令的确认
     * 载荷: 原始命令的ID或类型
     */
    ACK,
    
    /**
     * 错误响应 - 命令处理出错
     * 载荷: 错误信息和详情
     */
    ERROR,
    
    /**
     * Ping请求 - 测试连接
     * 载荷: 可选的时间戳
     */
    PING,
    
    /**
     * Pong响应 - 对Ping的回应
     * 载荷: 对应Ping的时间戳
     */
    PONG,
    
    /**
     * 认证命令 - 用于连接认证
     * 载荷: 认证凭证
     */
    AUTH,
    
    /**
     * 认证结果 - 认证响应
     * 载荷: 认证结果(true/false)和消息
     */
    AUTH_RESULT,
    
    SERVER_PING
}
